﻿using System;
using System.Runtime.InteropServices;

namespace WirelessAccessPoint.InteropServices
{
    /// <summary>
    /// The WLAN_NOTIFICATION_DATA structure contains information provided when
    /// receiving notifications.
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct WLAN_NOTIFICATION_DATA
    {
        /// <summary>
        /// A value that indicates the source of the notification.
        /// </summary>
        public WLAN_NOTIFICATION_SOURCE NotificationSource;

        /// <summary>
        /// The type of notification. The value of this member indicates what
        /// type of associated data will be present in the value pointed to by
        /// the pData member.
        /// This member can be a ONEX_NOTIFICATION_TYPE, WLAN_NOTIFICATION_ACM,
        /// WLAN_NOTIFICATION_MSM, or WLAN_HOSTED_NETWORK_NOTIFICATION_CODE
        /// enumeration value.
        /// </summary>
        public uint NotificationCode;

        /// <summary>
        /// The interface on which the notification is for.
        /// </summary>
        public Guid InterfaceGuid;

        /// <summary>
        /// The size, in bytes, of value pointed to by pData member.
        /// </summary>
        public uint dwDataSize;

        /// <summary>
        /// A pointer to additional data provided for the notification. The
        /// type of data pointed to by the pData member is determined by the
        /// value of the NotificationCode member.
        /// </summary>
        public IntPtr pData;
    }
}
